package com.ruoyi.bigbase.controller;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.annotation.InnerAuth;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.bigbase.domain.IntegralDetails;
import com.ruoyi.bigbase.service.IIntegralDetailsService;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.page.TableDataInfo;

/**
 * 积分明细Controller
 * 
 * @author bigbase
 * @date 2025-05-15
 */
@RestController
@RequestMapping("/details")
public class IntegralDetailsController extends BaseController
{
    @Autowired
    private IIntegralDetailsService integralDetailsService;

    /**
     * 查询积分明细列表
     */
    @RequiresPermissions("customer:details:list")
    @GetMapping("/list")
    public TableDataInfo list(IntegralDetails integralDetails)
    {
        startPage();
        List<IntegralDetails> list = integralDetailsService.selectIntegralDetailsList(integralDetails);
        return getDataTable(list);
    }

    /**
     * 导出积分明细列表
     */
    @RequiresPermissions("customer:details:export")
    @Log(title = "积分明细", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, IntegralDetails integralDetails)
    {
        List<IntegralDetails> list = integralDetailsService.selectIntegralDetailsList(integralDetails);
        ExcelUtil<IntegralDetails> util = new ExcelUtil<IntegralDetails>(IntegralDetails.class);
        util.exportExcel(response, list, "积分明细数据");
    }

    /**
     * 获取积分明细详细信息
     */
    @RequiresPermissions("customer:details:query")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Integer id)
    {
        return success(integralDetailsService.selectIntegralDetailsById(id));
    }

//    远程调用，增加积分
    @InnerAuth
    @PostMapping("/addPoints")
    public AjaxResult addPoints(@RequestBody IntegralDetails integralDetails) {
        return toAjax(integralDetailsService.insertIntegralDetails(integralDetails));
    }




    //判断是否距上次登录已过一天
    @InnerAuth
    @GetMapping("/compareByUserId/{userId}")
    public Integer getTimeByUserId(@PathVariable("userId") Integer userId){
        Date dt = integralDetailsService.getTimeByUserId(userId);
        if(dt == null){
            return -1;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(dt);
        c.add(Calendar.DATE, 1);  // number of days to add
        dt = c.getTime();  // dt is now the new date

        return DateUtils.getNowDate().compareTo(dt);
    }

    /**
     * 新增积分明细
     */
    @RequiresPermissions("customer:details:add")
    @Log(title = "积分明细", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody IntegralDetails integralDetails)
    {
        return toAjax(integralDetailsService.insertIntegralDetails(integralDetails));
    }

    /**
     * 修改积分明细
     */
    @RequiresPermissions("customer:details:edit")
    @Log(title = "积分明细", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody IntegralDetails integralDetails)
    {
        return toAjax(integralDetailsService.updateIntegralDetails(integralDetails));
    }

    /**
     * 删除积分明细
     */
    @RequiresPermissions("customer:details:remove")
    @Log(title = "积分明细", businessType = BusinessType.DELETE)
	@DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Integer[] ids)
    {



        return toAjax(integralDetailsService.deleteIntegralDetailsByIds(ids));
    }

    @RequiresPermissions("customer:details:remove")
    @Log(title = "积分明细", businessType = BusinessType.DELETE)
    @RequestMapping("/removeInfo")
    public AjaxResult removeInfo(@RequestBody IntegralDetails integralDetails)
    {
        System.out.println(integralDetails);
        Date dt = integralDetails.getTime();
        System.out.println(dt);
        if(dt == null){
            return toAjax(integralDetailsService.deleteIntegralDetailsById(integralDetails.getId()));
        }
        Calendar c = Calendar.getInstance();
        c.setTime(dt);
        c.add(Calendar.DATE, 1);  // number of days to add
        dt = c.getTime();  // dt is now the new date

        if(DateUtils.getNowDate().compareTo(dt)>0)
            return toAjax(integralDetailsService.deleteIntegralDetailsById(integralDetails.getId()));
        else
            return toAjax(-1);
    }

}
